<?php
//方法修饰符有:static,final,abstract
//static:静态的
// class Student{
//     public static $name='张三';
//     static public function show(){
//         echo "我是一个静态方法";
//     }
// }

// echo Student::$name;
// Student::show();


//统计在线人数
// class Student{
//     private static $num=0;//静态变量，在内存中只有一份
//     public function __construct()
//     {
//         self::$num++;
//     }
//     public function __destruct()
//     {
//         self::$num--;
//     }
//     public function show(){
//         echo '在线人数'.self::$num;
//     }
// }
// $stu1=new Student();
// $stu2=new Student();
// $stu3=new Student();
// $stu3->show();
// unset($stu2);
// $stu3->show();



//abstract:抽象的
// 1. abstract修饰的方法是抽象方法，修饰的类是抽象类
// 2. 只有方法的声明没有方法的实现称为抽象方法
// 3. 一个类中只要有一个方法是抽象方法，这个类必须是抽象类。
// 4. 抽象类的特点是不能被实例化
// 5. 子类继承了抽象类，就必须重新实现父类的所有的抽象方法，否则不允许实例化
// 6. 类中没有抽象方法也可以声明成抽象类，用来阻止类的实例化
// abstract class Student{
//    public abstract function show();
//    public abstract function say();

// }
// class child extends Student{
//     public function show(){
//        echo 'jdas';
//     }
//     public function say(){
//        echo '123';
//     }
// }
// $stu1=new child();
// $stu1->show();
// $stu1->say();

//接口
//如果一个类中所有方法都是抽象方法，那么这个抽象类可以声明成接口
interface Student{
   function say();
   function speek();
}

class Child implements Student{
    public function say(){
        echo '113213';
    }
    public function speek(){
        echo 'dadasda';
    }
}

$child=new Child();
$child->say();
$child->speek();
?>